package estacion.persistencia;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;

import estacion.dominio.Linea;
import estacion.dominio.Persona;
import estacion.dominio.excepciones.NoHayConexionesException;


public class FPLinea {
	
	
	public static void insertLinea(Linea lin) throws Exception {
		//String SQL="Insert into persona (DNI) values (?)";
		String SQL="Insert into linea(codigo_linea, nombre) values("+lin.getCodigo_linea()+", '"+lin.getnombre()+"')";
		Conexion bd=null;
		Exception ex=null;
		PreparedStatement p=null;
		try {
			bd=Gestor_bbdd.get().getBD();
			p=bd.prepareStatement(SQL);
			p.executeUpdate();
		}
		catch (Exception e) {
			ex=e;
		}
		finally {
			bd.close();
			if (ex!=null)
				throw ex;
		}
	}

	//Elmina una Persona dado el dni
	public static void deleteLinea(int codigo_linea) throws Exception {
		String SQL="Delete from linea where codigo_linea=?";
		Conexion bd=null;
		Exception ex=null;
		PreparedStatement p=null;
		try {
			bd=Gestor_bbdd.get().getBD();
			p=bd.prepareStatement(SQL);
			p.setInt(1, codigo_linea);
			p.executeUpdate();
		}
		catch (Exception e) {
			ex=e;
		}
		finally {
			bd.close();
			if (ex!=null)
				throw ex;
		}	
	}
	
	//Te devuelve todas las personas que existen
	public static Linea consultLinea(int codigo_linea) throws Exception {
		Linea lin=null;		
		String SQL="Select * from linea where codigo_linea="+codigo_linea+"";
		
		Conexion bd=null;
		Exception ex=null;
		PreparedStatement p=null;
		try {
			bd=Gestor_bbdd.get().getBD();
			p=bd.prepareStatement(SQL);
			ResultSet r=p.executeQuery();
			while (r.next()) {
				lin=new Linea();
				lin.setCodigo_linea(r.getInt("codigo_linea"));
				lin.setnombre(r.getString("nombre"));
			}			
		}
		catch (Exception e) {
			ex=e;
		}
		finally {
			bd.close();
			if (ex!=null)
				throw ex;
		}
		return lin;
	}
	
	public static Linea consultLine(String nombre) throws Exception {
		Linea lin=null;		
		String SQL="Select * from linea where nombre='"+nombre+"'";
			
		Conexion bd=null;
		Exception ex=null;
		PreparedStatement p=null;
		try {
			bd=Gestor_bbdd.get().getBD();
			p=bd.prepareStatement(SQL);
			ResultSet r=p.executeQuery();
			while (r.next()) {
				lin=new Linea();
				lin.setCodigo_linea(r.getInt("codigo_linea"));
				lin.setnombre(r.getString("nombre"));
			}			
		}
		catch (Exception e) {
			ex=e;
		}
		finally {
			bd.close();
			if (ex!=null)
				throw ex;
		}
		
		return lin;
	}
	
	public static int consultMaxLine() throws Exception {
		int linea_mayor=0;		
		String SQL="Select MAX(codigo_linea) from linea";
			
		Conexion bd=null;
		Exception ex=null;
		PreparedStatement p=null;
		try {
			bd=Gestor_bbdd.get().getBD();
			p=bd.prepareStatement(SQL);
			ResultSet r=p.executeQuery();
			while (r.next()) {
				linea_mayor=r.getInt("MAX(codigo_linea)");
			}			
		}
		catch (Exception e) {
			ex=e;
		}
		finally {
			bd.close();
			if (ex!=null)
				throw ex;
		}
		
		return linea_mayor;
	}
	

	public static void modificarLinea(Linea lin, int codigo) throws Exception{
		String SQL="UPDATE linea SET nombre="+lin.getnombre()+" where codigo_linea= "+codigo;
		Conexion bd=null;
		Exception ex=null;
		PreparedStatement update=null;
		try {
			bd=Gestor_bbdd.get().getBD();
			update=bd.prepareStatement(SQL);
			update.executeUpdate();			
		}
		catch (Exception e) {
			ex=e;
		}
		finally {
			bd.close();
			if (ex!=null)
				throw ex;
		}
	}
	
	public static Vector<Linea> getLineas() throws Exception {
		Vector<Linea> result=new Vector<Linea>();
		String SQL="Select * from linea";
		Conexion bd=null;
		Exception ex=null;
		PreparedStatement p=null;
		try {
			bd=Gestor_bbdd.get().getBD();
			p=bd.prepareStatement(SQL);
			ResultSet r=p.executeQuery();
			while (r.next()) {
				Linea lin=new Linea();
				lin.setCodigo_linea(r.getInt("codigo_linea"));
				lin.setnombre(r.getString("nombre"));
				result.add(lin);
			}			
		}
		catch (Exception e) {
			ex=e;
		}
		finally {
			bd.close();
			if (ex!=null)
				throw ex;
		}
		return result;
	}
	
}
